<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
//    JavaScript 所有数字都保存成 64 位浮点数，这给数值的表示带来了两大限制。一是数值的精度只能到 53 个二进制位（相当于 16 个十进制位），大于这个范围的整数，JavaScript 是无法精确表示，这使得 JavaScript 不适合进行科学和金融方面的精确计算。二是大于或等于2的1024次方的数值，JavaScript 无法表示，会返回Infinity。
    console.log(Math.pow(2,53));
    console.log(Math.pow(2,53)+1);
    // console.log(Math.pow(2,53)+2);

    // console.log(Math.pow(2,1024));

    // 解决方法: 大整数
    
    // 如何创建大整数?
    // 1. 声明式创建
    var a = 2n;
    var b = 53n
    // console.log(Math.pow(a,b));  // 大整数不能使用Math.pow()

    console.log(a**b);  // a^b
    console.log(a**b + 1n); 
    console.log(2n**1024n);
    console.log(2n**1024n+1n);


    // 2. 强制类型转换
    var a = BigInt(2);
    console.log(a);

    var b = Number(a)
    console.log(b);







</script>
</html>